// 小六壬占卜核心算法和交互逻辑

class LiuRenDivination {
    constructor() {
        this.palaces = [
            {
                name: '大安',
                meaning: '身不动时',
                interpretation: '大安为身不动时，象征稳定与安宁。此卦主静不主动，如山岳之稳重，如大地之厚德。在人生的十字路口，大安提醒我们有时候"不动"也是一种智慧的选择。求财虽难立即获得，但基础稳固；求官虽不能速成，但根基深厚；感情方面需要耐心培养，不可急于求成。疾病虽愈合缓慢，但能根治。此时最重要的是保持内心的平静，积蓄力量，等待时机成熟。',
                advice: '当前宜静观其变，不宜轻举妄动。保持现状，专注于内在修养和能力提升。在工作中稳扎稳打，在感情中真诚待人，在健康上注重调养。记住：静水流深，厚积薄发。',
                fortune: {
                    career: '事业运势平稳，不宜跳槽或大幅变动，专注提升专业技能',
                    love: '感情需要时间培养，单身者不急于表白，有伴者宜增进了解',
                    wealth: '财运较为保守，适合储蓄理财，不宜投机冒险',
                    health: '身体状况稳定，注重养生保健，预防胜于治疗'
                }
            },
            {
                name: '留连',
                meaning: '人未归时',
                interpretation: '留连为人未归时，象征着等待与延迟。如秋日的落叶，虽然飘零但终有归宿；如远行的游子，虽然未归但心系故乡。此卦提醒我们，人生中的很多事情都需要时间的沉淀和等待。求财需要耐心经营，不可急功近利；求官需要时机成熟，不可强求；感情中可能会有分离或等待，但真情终会相聚；健康方面可能恢复较慢，需要持续调理。留连教导我们学会等待的艺术，在等待中积累，在延迟中成长。',
                advice: '此时需要极大的耐心和毅力。不要因为进展缓慢而放弃，坚持就是胜利。在等待的过程中，可以充实自己，提升能力。对于重要的决定，不妨再等等，时机未到时勉强行动反而不利。',
                fortune: {
                    career: '工作进展较慢，可能遇到阻碍，需要耐心处理，不宜急于求成',
                    love: '感情可能处于等待期，异地恋或分离情况较多，需要坚持',
                    wealth: '财运回报周期较长，投资需要长远眼光，短期难见效果',
                    health: '恢复过程缓慢，需要持续治疗和调养，不可中途放弃'
                }
            },
            {
                name: '速喜',
                meaning: '人即至时',
                interpretation: '速喜为人即至时，象征着快速和喜悦。如春风化雨，万物复苏；如旭日东升，光明普照。此卦是六壬中最为吉利的卦象之一，预示着好消息即将到来，所求之事能够快速实现。求财能够迅速获得，求官能够顺利升迁，求名能够声誉鹊起，感情能够开花结果，健康能够快速恢复。速喜提醒我们要把握当下的机遇，积极行动，因为时机正好，行动力强的人能够获得最大的收益。',
                advice: '这是行动的最佳时机！要果断决策，积极进取。所有计划都可以加速推进，重要的事情要立即着手。在这个时期，你的直觉很准确，相信自己的判断。同时要保持谦逊，好运来临时更要珍惜。',
                fortune: {
                    career: '事业运势极佳，升职加薪机会多，新项目容易成功，宜积极争取',
                    love: '桃花运旺盛，单身者易遇良缘，有伴者感情升温，适合求婚结婚',
                    wealth: '财运亨通，投资理财收益丰厚，偏财运也不错，把握机会',
                    health: '身体状况良好，疾病快速康复，精力充沛，适合运动健身'
                }
            },
            {
                name: '赤口',
                meaning: '官事凶时',
                interpretation: '赤口为官事凶时，象征着冲突与是非。如烈火燎原，需要谨慎应对；如暴风骤雨，考验人的意志。此卦提醒我们在人际交往中要特别小心，容易因为言语不当而引起纠纷，或者卷入他人的是非之中。求财可能会有损失，特别是因为口舌之争；求官可能会遇到小人陷害；感情中容易发生争吵和误解；健康方面要注意口腔、咽喉等部位的问题。赤口教导我们在困难时期要保持冷静，以德报怨，化解矛盾。',
                advice: '此时最重要的是管好自己的嘴，少说多做。避免与人发生争执，即使有理也要让三分。在工作中保持低调，不要出风头。如果已经卷入纠纷，要寻求正当途径解决，不可意气用事。',
                fortune: {
                    career: '工作中易遇小人，可能有口舌是非，需要谨慎处理人际关系',
                    love: '感情中容易发生争吵，需要多沟通理解，避免冲动分手',
                    wealth: '财运不佳，可能因纠纷损财，不宜投资，谨防诈骗',
                    health: '注意口腔、咽喉健康，情绪波动大，需要调节心态'
                }
            },
            {
                name: '小吉',
                meaning: '人来喜时',
                interpretation: '小吉为人来喜时，象征着温和的吉利。如细雨润物，虽不轰烈但持续有效；如涓涓细流，虽不汹涌但源远流长。此卦虽然不如速喜那样大吉大利，但胜在稳定持久，是一个让人感到温暖和希望的卦象。求财能有小的收获，积少成多；求官能有小的进步，步步为营；感情能有小的甜蜜，细水长流；健康能有小的改善，逐渐好转。小吉教导我们要珍惜生活中的小确幸，在平凡中发现美好。',
                advice: '要有知足常乐的心态，不要好高骛远。小的进步也值得庆祝，小的收获也要珍惜。在这个时期，踏实努力比投机取巧更重要。保持积极乐观的心态，好运会慢慢积累。',
                fortune: {
                    career: '工作稳步前进，虽无大突破但有小进展，适合积累经验',
                    love: '感情温馨平淡，虽无激情但很温暖，适合细水长流的爱情',
                    wealth: '财运平稳上升，小额投资有收益，适合定期储蓄',
                    health: '身体逐渐好转，小毛病容易治愈，保持良好生活习惯'
                }
            },
            {
                name: '空亡',
                meaning: '音信稀时',
                interpretation: '空亡为音信稀时，象征着虚无与重新开始。如秋叶凋零后的新芽，如潮水退去后的沙滩。此卦虽然看似不利，但实际上蕴含着"破而后立"的深刻哲理。当前的努力可能暂时看不到成果，所求之事可能暂时无法实现，但这正是重新审视和规划的好时机。求财可能暂时困难，但可以重新制定理财计划；求官可能暂时受阻，但可以重新规划职业道路；感情可能暂时空虚，但可以重新认识自己的需求。空亡教导我们有时候"空"也是一种智慧，在空无中寻找新的可能。',
                advice: '不要沮丧，这是重新开始的机会。停下来思考一下，之前的方向是否正确，方法是否得当。利用这个时期充实自己，学习新技能，建立新的人脉关系。有时候放下执念，反而能找到新的出路。',
                fortune: {
                    career: '工作可能遇到瓶颈，需要重新规划职业方向，考虑转型',
                    love: '感情可能进入空窗期，单身者暂时难遇良缘，需要提升自己',
                    wealth: '财运低迷，投资需谨慎，适合学习理财知识，为将来做准备',
                    health: '身体可能感到疲惫，需要好好休息调养，重新建立健康习惯'
                }
            }
        ];
        
        this.init();
    }

    init() {
        this.setupEventListeners();
        this.initializeDateSelectors();
        this.setCurrentTime();
        this.setupQuestionInput();
    }

    setupEventListeners() {
        // 开始占卜按钮
        document.getElementById('startDivination').addEventListener('click', () => {
            this.startDivination();
        });

        // 重新占卜按钮
        document.getElementById('restartBtn').addEventListener('click', () => {
            this.restart();
        });

        // 分享结果按钮
        document.getElementById('shareBtn').addEventListener('click', () => {
            this.shareResult();
        });
    }

    initializeDateSelectors() {
        // 初始化日期选择器
        const daySelect = document.getElementById('day');
        for (let i = 1; i <= 30; i++) {
            const option = document.createElement('option');
            option.value = i;
            option.textContent = i + '日';
            daySelect.appendChild(option);
        }
    }

    setCurrentTime() {
        // 设置当前时间为默认值
        const now = new Date();
        const month = now.getMonth() + 1;
        const day = now.getDate();
        const hour = now.getHours();

        document.getElementById('month').value = month;
        document.getElementById('day').value = day;
        
        // 根据当前小时设置时辰
        let timeIndex;
        if (hour >= 23 || hour < 1) timeIndex = 1; // 子时
        else if (hour >= 1 && hour < 3) timeIndex = 2; // 丑时
        else if (hour >= 3 && hour < 5) timeIndex = 3; // 寅时
        else if (hour >= 5 && hour < 7) timeIndex = 4; // 卯时
        else if (hour >= 7 && hour < 9) timeIndex = 5; // 辰时
        else if (hour >= 9 && hour < 11) timeIndex = 6; // 巳时
        else if (hour >= 11 && hour < 13) timeIndex = 7; // 午时
        else if (hour >= 13 && hour < 15) timeIndex = 8; // 未时
        else if (hour >= 15 && hour < 17) timeIndex = 9; // 申时
        else if (hour >= 17 && hour < 19) timeIndex = 10; // 酉时
        else if (hour >= 19 && hour < 21) timeIndex = 11; // 戌时
        else timeIndex = 12; // 亥时

        document.getElementById('hour').value = timeIndex;
    }

    setupQuestionInput() {
        const questionTextarea = document.getElementById('divinationQuestion');
        const charCount = document.getElementById('charCount');
        
        if (questionTextarea && charCount) {
            questionTextarea.addEventListener('input', (e) => {
                const currentLength = e.target.value.length;
                charCount.textContent = currentLength;
                
                // 更新字符计数样式
                charCount.className = '';
                if (currentLength > 180) {
                    charCount.classList.add('danger');
                } else if (currentLength > 150) {
                    charCount.classList.add('warning');
                }
            });
        }
    }

    startDivination() {
        // 获取占卜问题
        const questionTextarea = document.getElementById('divinationQuestion');
        const question = questionTextarea ? questionTextarea.value.trim() : '';
        
        // 如果没有输入问题，提示用户
        if (!question) {
            alert('请先输入您要占卜的事情');
            questionTextarea.focus();
            return;
        }
        
        // 获取选择的时间
        const month = parseInt(document.getElementById('month').value);
        const day = parseInt(document.getElementById('day').value);
        const hour = parseInt(document.getElementById('hour').value);

        // 隐藏说明和输入区域，显示占卜过程
        document.getElementById('instructionSection').style.display = 'none';
        document.getElementById('questionSection').style.display = 'none';
        document.getElementById('timeSection').style.display = 'none';
        document.getElementById('divinationProcess').style.display = 'block';

        // 开始占卜计算和动画
        this.performDivination(month, day, hour);
    }

    performDivination(month, day, hour) {
        // 小六壬算法：
        // 第一步：月上起日，从大安开始数月份，落在哪个宫位，再从该宫位数日期
        // 第二步：日上起时，从第一步的结果开始数时辰
        // 第三步：得出最终宫位

        let step1Position, step2Position, finalPosition;

        // 第一步：月上起日
        step1Position = (month - 1) % 6; // 从大安(0)开始数月份
        const step1Palace = this.palaces[step1Position].name;
        
        // 从月份落宫开始数日期
        step2Position = (step1Position + day - 1) % 6;
        const step2Palace = this.palaces[step2Position].name;

        // 第二步：日上起时
        finalPosition = (step2Position + hour - 1) % 6;
        const finalPalace = this.palaces[finalPosition];

        // 显示计算步骤
        document.getElementById('step1').textContent = `月份${month}，从大安开始数，落在${step1Palace}`;
        document.getElementById('step2').textContent = `从${step1Palace}开始数日期${day}，落在${step2Palace}`;
        document.getElementById('step3').textContent = `从${step2Palace}开始数时辰${hour}，最终落在${finalPalace.name}`;

        // 开始动画演示
        this.animateDivination(step1Position, step2Position, finalPosition, finalPalace);
    }

    animateDivination(step1Pos, step2Pos, finalPos, finalPalace) {
        const palaces = document.querySelectorAll('.palace');
        const progressFill = document.getElementById('progressFill');
        const stepInfos = document.querySelectorAll('.step-info');
        
        // 清除之前的状态
        palaces.forEach(palace => {
            palace.classList.remove('active', 'calculating');
        });
        stepInfos.forEach(step => step.classList.remove('active'));

        let animationStep = 0;
        const animationInterval = setInterval(() => {
            // 更新进度条
            const progress = ((animationStep + 1) / 5) * 100;
            progressFill.style.width = `${progress}%`;

            // 清除之前的高亮
            palaces.forEach(palace => palace.classList.remove('calculating'));
            stepInfos.forEach(step => step.classList.remove('active'));

            switch(animationStep) {
                case 0:
                    // 第一步动画 - 月份计算
                    stepInfos[0].classList.add('active');
                    this.highlightPalaceSequence(0, step1Pos, '月份');
                    break;
                case 1:
                    // 第二步动画 - 日期计算
                    stepInfos[1].classList.add('active');
                    this.highlightPalaceSequence(step1Pos, step2Pos, '日期');
                    break;
                case 2:
                    // 第三步动画 - 时辰计算
                    stepInfos[2].classList.add('active');
                    this.highlightPalaceSequence(step2Pos, finalPos, '时辰');
                    break;
                case 3:
                    // 最终结果动画
                    palaces[finalPos].classList.add('active');
                    palaces[finalPos].classList.remove('calculating');
                    
                    // 添加成功音效（如果浏览器支持）
                    this.playSuccessSound();
                    
                    // 添加触觉反馈
                    DivinationUtils.addHapticFeedback();
                    break;
                case 4:
                    // 显示结果
                    clearInterval(animationInterval);
                    setTimeout(() => {
                        this.showResult(finalPalace);
                    }, 1000);
                    return;
            }
            animationStep++;
        }, 2000);
    }

    highlightPalaceSequence(startPos, endPos, type) {
        const palaces = document.querySelectorAll('.palace');
        let currentPos = startPos;
        let count = 0;
        const maxCount = Math.abs(endPos - startPos) || 6;

        const sequenceInterval = setInterval(() => {
            // 清除之前的高亮
            palaces.forEach(p => p.classList.remove('calculating'));
            
            // 高亮当前宫位
            palaces[currentPos].classList.add('calculating');
            
            count++;
            currentPos = (currentPos + 1) % 6;
            
            if (count >= maxCount) {
                clearInterval(sequenceInterval);
                palaces[endPos].classList.add('calculating');
            }
        }, 300);
    }

    // 根据占卜问题类型提供针对性建议
    getContextualAdvice(palace, question) {
        if (!question) return palace.advice;
        
        const questionLower = question.toLowerCase();
        const questionChinese = question;
        
        // 识别问题类型
        let questionType = 'general';
        
        if (questionChinese.includes('工作') || questionChinese.includes('事业') || questionChinese.includes('职业') || 
            questionChinese.includes('升职') || questionChinese.includes('跳槽') || questionChinese.includes('创业') ||
            questionLower.includes('work') || questionLower.includes('career') || questionLower.includes('job')) {
            questionType = 'career';
        } else if (questionChinese.includes('爱情') || questionChinese.includes('感情') || questionChinese.includes('恋爱') || 
                   questionChinese.includes('结婚') || questionChinese.includes('分手') || questionChinese.includes('复合') ||
                   questionLower.includes('love') || questionLower.includes('relationship') || questionLower.includes('marriage')) {
            questionType = 'love';
        } else if (questionChinese.includes('财运') || questionChinese.includes('赚钱') || questionChinese.includes('投资') || 
                   questionChinese.includes('理财') || questionChinese.includes('生意') || questionChinese.includes('收入') ||
                   questionLower.includes('money') || questionLower.includes('wealth') || questionLower.includes('finance')) {
            questionType = 'wealth';
        } else if (questionChinese.includes('健康') || questionChinese.includes('身体') || questionChinese.includes('疾病') || 
                   questionChinese.includes('治疗') || questionChinese.includes('康复') ||
                   questionLower.includes('health') || questionLower.includes('medical') || questionLower.includes('illness')) {
            questionType = 'health';
        } else if (questionChinese.includes('学习') || questionChinese.includes('考试') || questionChinese.includes('升学') || 
                   questionChinese.includes('学业') || questionChinese.includes('教育') ||
                   questionLower.includes('study') || questionLower.includes('exam') || questionLower.includes('education')) {
            questionType = 'study';
        } else if (questionChinese.includes('搬家') || questionChinese.includes('旅行') || questionChinese.includes('出行') || 
                   questionChinese.includes('移居') || questionChinese.includes('迁移') ||
                   questionLower.includes('travel') || questionLower.includes('move') || questionLower.includes('relocation')) {
            questionType = 'travel';
        }
        
        // 根据宫位和问题类型提供针对性建议
        const contextualAdvice = {
            '大安': {
                career: '事业方面建议保持现状，不要急于跳槽或创业。专注提升自己的专业技能，为将来的机会做准备。稳定的工作环境对你更有利。',
                love: '感情需要慢慢培养，不要急于表白或做重大决定。如果已有伴侣，多花时间了解对方，建立深厚的感情基础。',
                wealth: '财务状况相对稳定，适合保守理财。定期储蓄比投机更适合你，避免高风险投资。',
                health: '身体状况良好，重在预防保健。规律作息，适度运动，保持良好的生活习惯。',
                study: '学习进度稳定，不要急于求成。扎实基础知识，循序渐进，厚积薄发。',
                travel: '不是出行的最佳时机，如非必要建议推迟。如果必须出行，要做好充分准备。',
                general: palace.advice
            },
            '留连': {
                career: '工作中可能遇到延迟或阻碍，需要耐心等待。不要因为进展缓慢而轻易放弃，坚持下去会有收获。',
                love: '感情可能处于等待期，异地恋或分离的情况需要坚持。真心相爱的人终会相聚。',
                wealth: '财运回报周期较长，投资需要长远眼光。短期内难见效果，但长期坚持会有回报。',
                health: '恢复过程可能较慢，需要持续治疗和调养。不要中途放弃，坚持治疗很重要。',
                study: '学习进度可能较慢，但不要气馁。多花时间复习巩固，基础扎实后进步会很快。',
                travel: '出行可能遇到延误，要做好时间上的准备。保持耐心，最终能够成行。',
                general: palace.advice
            },
            '速喜': {
                career: '事业运势极佳！这是升职加薪的好时机，有新项目要积极争取。你的努力会很快得到认可。',
                love: '桃花运旺盛！单身者容易遇到心仪对象，有伴者感情升温。是表白、求婚的好时机。',
                wealth: '财运亨通，投资理财都有不错收益。把握机会，但也要适度，不要过于贪心。',
                health: '身体状况良好，疾病能够快速康复。精力充沛，适合运动健身。',
                study: '学习效率很高，考试运势佳。抓住这个时机，努力学习会有很好的成果。',
                travel: '出行运势很好，旅途愉快顺利。是外出旅游、出差的好时机。',
                general: palace.advice
            },
            '赤口': {
                career: '工作中要小心人际关系，可能遇到小人或口舌是非。保持低调，少说多做。',
                love: '感情中容易发生争吵，需要多沟通理解。避免冲动说话，以免伤害感情。',
                wealth: '财运不佳，可能因纠纷损财。不要投资，谨防诈骗。理财要保守。',
                health: '注意口腔、咽喉健康。情绪波动较大，要学会调节心态，避免上火。',
                study: '学习中可能遇到困难或挫折，不要急躁。调整心态，寻求帮助。',
                travel: '出行要格外小心，可能遇到麻烦。如非必要建议推迟，出行时要低调。',
                general: palace.advice
            },
            '小吉': {
                career: '工作稳步前进，虽然没有大突破但有小进展。积累经验，为将来做准备。',
                love: '感情温馨平淡，虽然没有激情但很温暖。珍惜这种细水长流的感情。',
                wealth: '财运平稳上升，小额投资有收益。适合定期储蓄，积少成多。',
                health: '身体逐渐好转，小毛病容易治愈。保持良好的生活习惯。',
                study: '学习有小进步，要继续努力。不要小看每一点进步，积累起来就是大成就。',
                travel: '出行顺利，虽然不会有特别的惊喜，但过程愉快。适合短途旅行。',
                general: palace.advice
            },
            '空亡': {
                career: '工作可能遇到瓶颈，需要重新规划职业方向。考虑是否需要转型或学习新技能。',
                love: '感情可能进入空窗期，单身者暂时难遇良缘。利用这个时间提升自己。',
                wealth: '财运低迷，投资需谨慎。适合学习理财知识，为将来的机会做准备。',
                health: '身体可能感到疲惫，需要好好休息调养。重新建立健康的生活习惯。',
                study: '学习可能遇到困难，需要调整学习方法。不要气馁，重新开始也是机会。',
                travel: '不是出行的好时机，容易遇到意外情况。如必须出行，要做好充分准备。',
                general: palace.advice
            }
        };
        
        return contextualAdvice[palace.name][questionType] || palace.advice;
     }

     playSuccessSound() {
         // 创建简单的成功音效
        if ('AudioContext' in window || 'webkitAudioContext' in window) {
            try {
                const audioContext = new (window.AudioContext || window.webkitAudioContext)();
                const oscillator = audioContext.createOscillator();
                const gainNode = audioContext.createGain();
                
                oscillator.connect(gainNode);
                gainNode.connect(audioContext.destination);
                
                oscillator.frequency.setValueAtTime(523.25, audioContext.currentTime); // C5
                oscillator.frequency.setValueAtTime(659.25, audioContext.currentTime + 0.1); // E5
                oscillator.frequency.setValueAtTime(783.99, audioContext.currentTime + 0.2); // G5
                
                gainNode.gain.setValueAtTime(0.1, audioContext.currentTime);
                gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.3);
                
                oscillator.start(audioContext.currentTime);
                oscillator.stop(audioContext.currentTime + 0.3);
            } catch (e) {
                // 音频不支持时静默处理
                console.log('Audio not supported');
            }
        }
    }

  showResult(palace) {
        // 获取占卜问题
        const questionTextarea = document.getElementById('divinationQuestion');
        const question = questionTextarea ? questionTextarea.value.trim() : '';
        
        // 显示结果区域
        document.getElementById('divinationProcess').style.display = 'none';
        document.getElementById('resultSection').style.display = 'block';
        
        // 显示占卜时间
        const resultTime = document.getElementById('resultTime');
        if (resultTime) {
            const now = new Date();
            const timeString = now.toLocaleString('zh-CN', {
                year: 'numeric',
                month: '2-digit',
                day: '2-digit',
                hour: '2-digit',
                minute: '2-digit'
            });
            resultTime.textContent = `占卜时间：${timeString}`;
        }
        
        // 显示占卜问题
        const questionDisplay = document.getElementById('questionDisplay');
        if (questionDisplay && question) {
            questionDisplay.textContent = question;
        }
        
        // 显示宫位结果
        // 根据宫位设置特色样式
        const resultPalaceElement = document.querySelector('.result-palace');
        const palaceClass = palace.name.toLowerCase()
            .replace('大安', 'daan')
            .replace('留连', 'liulian')
            .replace('速喜', 'suxi')
            .replace('赤口', 'chikou')
            .replace('小吉', 'xiaoji')
            .replace('空亡', 'kongwang');
        
        resultPalaceElement.className = `result-palace ${palaceClass}`;

        // 填充结果内容
        document.getElementById('resultPalace').textContent = palace.name;
        document.getElementById('palaceMeaning').textContent = palace.meaning;
        document.getElementById('interpretationContent').textContent = palace.interpretation;
        
        // 使用针对性建议
        const contextualAdvice = this.getContextualAdvice(palace, question);
        document.getElementById('adviceContent').textContent = contextualAdvice;

        // 显示运势详解
        this.showFortuneDetails(palace);

        // 添加触觉反馈
        DivinationUtils.addHapticFeedback();

        // 滚动到结果区域
        document.getElementById('resultSection').scrollIntoView({ 
            behavior: 'smooth' 
        });
    }

    showFortuneDetails(palace) {
        const fortuneData = {
            '大安': {
                career: '★★★★☆ 事业稳定发展，适合巩固现有成果，不宜冒进',
                love: '★★★☆☆ 感情平稳，需要耐心经营，真心相待',
                wealth: '★★★☆☆ 财运平稳，适合储蓄理财，避免投机',
                health: '★★★★☆ 身体健康，注重养生保健，预防为主'
            },
            '留连': {
                career: '★★☆☆☆ 事业发展缓慢，需要坚持不懈，等待时机',
                love: '★★☆☆☆ 感情进展迟缓，可能面临分离，需要坚持',
                wealth: '★★☆☆☆ 财运回报周期长，投资需谨慎，长远规划',
                health: '★★☆☆☆ 恢复较慢，需要持续调养，不可急躁'
            },
            '速喜': {
                career: '★★★★★ 事业运势极佳，升职加薪在即，把握机会',
                love: '★★★★★ 桃花运旺盛，感情甜蜜，喜事将近',
                wealth: '★★★★★ 财运亨通，投资获利，收入增加',
                health: '★★★★★ 身体健康，精力充沛，疾病快愈'
            },
            '赤口': {
                career: '★★☆☆☆ 工作中易有口舌是非，需谨言慎行',
                love: '★★☆☆☆ 感情易生争执，需要多沟通理解',
                wealth: '★☆☆☆☆ 财运不佳，谨防破财，理财保守',
                health: '★★☆☆☆ 注意口腔咽喉，情绪调节很重要'
            },
            '小吉': {
                career: '★★★☆☆ 事业小有进展，贵人相助，稳步前进',
                love: '★★★☆☆ 感情温和发展，小惊喜不断，渐入佳境',
                wealth: '★★★☆☆ 财运小有收获，意外之财，适度投资',
                health: '★★★☆☆ 身体逐渐好转，小病易愈，保持乐观'
            },
            '空亡': {
                career: '★☆☆☆☆ 事业可能遇挫，需要重新规划，另辟蹊径',
                love: '★☆☆☆☆ 感情空虚迷茫，可能面临分手，需要冷静',
                wealth: '★☆☆☆☆ 财运低迷，投资需谨慎，避免损失',
                health: '★★☆☆☆ 身体需要调养，注意休息，避免过劳'
            }
        };

        const fortune = fortuneData[palace.name] || fortuneData['大安'];
        
        document.getElementById('careerFortune').textContent = fortune.career;
        document.getElementById('loveFortune').textContent = fortune.love;
        document.getElementById('wealthFortune').textContent = fortune.wealth;
        document.getElementById('healthFortune').textContent = fortune.health;
    }

    shareResult() {
        const palace = document.getElementById('resultPalace').textContent;
        const meaning = document.getElementById('palaceMeaning').textContent;
        const question = document.getElementById('questionDisplay').textContent;
        const time = document.getElementById('resultTime').textContent;
        
        const shareText = `🔮 小六壬占卜结果 🔮\n\n${time}\n📝 问题：${question}\n🎯 结果：${palace} - ${meaning}\n\n✨ 小六壬占卜，传统智慧指引人生 ✨`;
        
        // 检查是否支持Web Share API
        if (navigator.share) {
            navigator.share({
                title: '小六壬占卜结果',
                text: shareText,
                url: window.location.href
            }).catch(err => {
                console.log('分享失败:', err);
                this.fallbackShare(shareText);
            });
        } else {
            this.fallbackShare(shareText);
        }
    }

    fallbackShare(text) {
        // 复制到剪贴板
        if (navigator.clipboard) {
            navigator.clipboard.writeText(text).then(() => {
                this.showShareSuccess('结果已复制到剪贴板！');
            }).catch(() => {
                this.showShareModal(text);
            });
        } else {
            this.showShareModal(text);
        }
    }

    showShareModal(text) {
        // 创建分享模态框
        const modal = document.createElement('div');
        modal.className = 'share-modal';
        modal.innerHTML = `
            <div class="share-modal-content">
                <div class="share-modal-header">
                    <h3>📤 分享占卜结果</h3>
                    <button class="close-modal" onclick="this.parentElement.parentElement.parentElement.remove()">×</button>
                </div>
                <div class="share-modal-body">
                    <textarea readonly class="share-text">${text}</textarea>
                    <div class="share-buttons">
                        <button class="copy-btn" onclick="this.parentElement.parentElement.parentElement.querySelector('.share-text').select(); document.execCommand('copy'); this.textContent='已复制!';">复制文本</button>
                    </div>
                </div>
            </div>
        `;
        
        // 添加样式
        const style = document.createElement('style');
        style.textContent = `
            .share-modal {
                position: fixed;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background: rgba(0, 0, 0, 0.5);
                display: flex;
                justify-content: center;
                align-items: center;
                z-index: 1000;
                animation: fadeIn 0.3s ease;
            }
            .share-modal-content {
                background: white;
                border-radius: 15px;
                padding: 0;
                max-width: 90%;
                width: 400px;
                max-height: 80%;
                overflow: hidden;
                box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
            }
            .share-modal-header {
                background: linear-gradient(135deg, #667eea, #764ba2);
                color: white;
                padding: 20px;
                display: flex;
                justify-content: space-between;
                align-items: center;
            }
            .share-modal-header h3 {
                margin: 0;
                font-size: 1.2rem;
            }
            .close-modal {
                background: none;
                border: none;
                color: white;
                font-size: 1.5rem;
                cursor: pointer;
                padding: 0;
                width: 30px;
                height: 30px;
                border-radius: 50%;
                display: flex;
                align-items: center;
                justify-content: center;
            }
            .close-modal:hover {
                background: rgba(255, 255, 255, 0.2);
            }
            .share-modal-body {
                padding: 20px;
            }
            .share-text {
                width: 100%;
                height: 200px;
                border: 2px solid #e2e8f0;
                border-radius: 10px;
                padding: 15px;
                font-size: 0.9rem;
                line-height: 1.5;
                resize: none;
                margin-bottom: 15px;
                font-family: inherit;
            }
            .share-buttons {
                display: flex;
                justify-content: center;
            }
            .copy-btn {
                background: linear-gradient(45deg, #4ecdc4, #44a08d);
                color: white;
                border: none;
                padding: 12px 24px;
                border-radius: 25px;
                font-size: 1rem;
                font-weight: 600;
                cursor: pointer;
                transition: all 0.3s ease;
            }
            .copy-btn:hover {
                transform: translateY(-2px);
                box-shadow: 0 5px 15px rgba(68, 160, 141, 0.3);
            }
            @keyframes fadeIn {
                from { opacity: 0; }
                to { opacity: 1; }
            }
        `;
        
        document.head.appendChild(style);
        document.body.appendChild(modal);
        
        // 点击背景关闭模态框
        modal.addEventListener('click', (e) => {
            if (e.target === modal) {
                modal.remove();
                style.remove();
            }
        });
    }

    showShareSuccess(message) {
        // 显示成功提示
        const toast = document.createElement('div');
        toast.className = 'share-toast';
        toast.textContent = message;
        toast.style.cssText = `
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: linear-gradient(45deg, #4ecdc4, #44a08d);
            color: white;
            padding: 15px 25px;
            border-radius: 25px;
            font-weight: 600;
            z-index: 1001;
            animation: toastShow 0.3s ease;
        `;
        
        const toastStyle = document.createElement('style');
        toastStyle.textContent = `
            @keyframes toastShow {
                from { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }
                to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            }
        `;
        
        document.head.appendChild(toastStyle);
        document.body.appendChild(toast);
        
        setTimeout(() => {
            toast.remove();
            toastStyle.remove();
        }, 2000);
    }

    restart() {
        document.getElementById('resultSection').style.display = 'none';
        document.getElementById('divinationProcess').style.display = 'none';
        document.getElementById('instructionSection').style.display = 'block';
        document.getElementById('questionSection').style.display = 'block';
        document.getElementById('timeSection').style.display = 'block';
        
        // 清空占卜问题
        const questionTextarea = document.getElementById('divinationQuestion');
        if (questionTextarea) {
            questionTextarea.value = '';
        }
        const charCount = document.getElementById('charCount');
        if (charCount) {
            charCount.textContent = '0';
            charCount.className = '';
        }
        
        // 清除宫位状态
        const palaces = document.querySelectorAll('.palace');
        palaces.forEach(palace => {
            palace.classList.remove('active', 'calculating');
        });

        // 滚动到顶部
        window.scrollTo({ top: 0, behavior: 'smooth' });
    }
}

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', () => {
    new LiuRenDivination();
});

// 添加一些实用的工具函数
class DivinationUtils {
    // 获取当前农历信息（简化版）
    static getLunarInfo() {
        const now = new Date();
        return {
            year: now.getFullYear(),
            month: now.getMonth() + 1,
            day: now.getDate()
        };
    }

    // 时辰名称转换
    static getTimeNameByHour(hour) {
        const timeNames = [
            '子时', '丑时', '寅时', '卯时', '辰时', '巳时',
            '午时', '未时', '申时', '酉时', '戌时', '亥时'
        ];
        
        let timeIndex;
        if (hour >= 23 || hour < 1) timeIndex = 0;
        else if (hour >= 1 && hour < 3) timeIndex = 1;
        else if (hour >= 3 && hour < 5) timeIndex = 2;
        else if (hour >= 5 && hour < 7) timeIndex = 3;
        else if (hour >= 7 && hour < 9) timeIndex = 4;
        else if (hour >= 9 && hour < 11) timeIndex = 5;
        else if (hour >= 11 && hour < 13) timeIndex = 6;
        else if (hour >= 13 && hour < 15) timeIndex = 7;
        else if (hour >= 15 && hour < 17) timeIndex = 8;
        else if (hour >= 17 && hour < 19) timeIndex = 9;
        else if (hour >= 19 && hour < 21) timeIndex = 10;
        else timeIndex = 11;

        return timeNames[timeIndex];
    }

    // 添加触觉反馈（如果设备支持）
    static addHapticFeedback() {
        if ('vibrate' in navigator) {
            navigator.vibrate(50);
        }
    }
}

// 添加页面可见性检测，优化性能
document.addEventListener('visibilitychange', () => {
    if (document.hidden) {
        // 页面隐藏时暂停动画
        const animations = document.querySelectorAll('.calculating');
        animations.forEach(el => el.style.animationPlayState = 'paused');
    } else {
        // 页面显示时恢复动画
        const animations = document.querySelectorAll('.calculating');
        animations.forEach(el => el.style.animationPlayState = 'running');
    }
});

// 添加触摸优化
let touchStartY = 0;
document.addEventListener('touchstart', (e) => {
    touchStartY = e.touches[0].clientY;
});

document.addEventListener('touchmove', (e) => {
    // 防止橡皮筋效果
    const touchY = e.touches[0].clientY;
    const touchDiff = touchY - touchStartY;
    
    if (window.scrollY === 0 && touchDiff > 0) {
        e.preventDefault();
    }
}, { passive: false });